1 module fswatch_helpers; 2 3 version(Windows) 4 { 5 size_t timeLastModified(const(wchar)* filePath) 6 { 7 import core.sys.windows.winbase; 8 import core.sys.windows.winnt; 9 import core.sys.windows.basetsd; 10 11 HANDLE hFile = CreateFile(filePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 12 if(hFile == INVALID_HANDLE_VALUE) 13 return 0; 14 15 FILETIME ftCreate, ftAccess, ftWrite; 16 17 scope(exit) CloseHandle(hFile); 18 19 20 if(!GetFileTime(hFile, &ftCreate, &ftAccess, &ftWrite)) 21 return 0; 22 23 ULARGE_INTEGER lastModTime; 24 25 lastModTime.LowPart = ftWrite.dwLowDateTime; 26 lastModTime.HighPart = ftWrite.dwHighDateTime; 27 28 return lastModTime.QuadPart; 29 } 30 31 string winGetCwd() 32 { 33 import hip.util.file:getcwd; 34 return getcwd; 35 } 36 37 bool winExists(const(wchar)* filePath) 38 { 39 import core.sys.windows.winnt; 40 import core.sys.windows.winbase; 41 42 DWORD fileAttr = GetFileAttributes(filePath); 43 44 return fileAttr != INVALID_FILE_ATTRIBUTES; 45 } 46 47 bool winIsDir(const(wchar)* path) 48 { 49 import core.sys.windows.winnt; 50 import core.sys.windows.winbase; 51 DWORD fileAttr = GetFileAttributes(path); 52 if (fileAttr == INVALID_FILE_ATTRIBUTES) 53 return false; 54 55 return (fileAttr & FILE_ATTRIBUTE_DIRECTORY) != 0; 56 } 57 58 59 }